home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / Src / ngenerics.h < prev    next >
C/C++ Source or Header  |  1993-06-24  |  2KB  |  47 lines

  1. /* External interface */
  2. #ifndef NGENERICS_H
  3. #define NGENERICS_H
  4. extern LispObject generic_apply(LispObject*,LispObject);
  5. extern LispObject generic_apply_1(LispObject*, LispObject,LispObject);
  6. extern LispObject generic_apply_2(LispObject*, LispObject,
  7.                                LispObject, LispObject);
  8. extern LispObject generic_apply_3(LispObject*, LispObject,
  9.                   LispObject,LispObject,LispObject);
  10. extern LispObject generic_apply_4(LispObject*,  LispObject,
  11.               LispObject, LispObject, LispObject, LispObject);
  12.  
  13. #define is_generic(x)          (typeof(x)==TYPE_GENERIC)
  14.  
  15. /* macros for generics */
  16.  
  17. #define N_SLOTS_IN_GENERIC 10
  18.  
  19. #define generic_name(x)            (slotref(x,0))
  20. #define generic_home(x)            (slotref(x,1))
  21. #define generic_argtype(x)            (slotref(x,2))
  22. #define generic_fast_method_cache(x)     (slotref(x,3))
  23. #define generic_slow_method_cache(x)     (slotref(x,4))
  24. #define generic_method_table(x)        (slotref(x,5))
  25. #define generic_method_class(x)     (slotref(x,6))
  26. #define generic_discriminator(x)     (slotref(x,7))
  27. #define generic_discrimination_depth(x)    (slotref(x,8))
  28. #define generic_setter(x)        (slotref(x,9))        
  29. #define N_SLOTS_IN_METHOD 5
  30.  
  31. #define method_qualifier(x)     slotref(x,0)
  32. #define method_signature(x)    slotref(x,1)
  33. #define method_host(x)        slotref(x,2)
  34. #define method_function(x)     slotref(x,3)
  35. #define method_fixed(x)     slotref(x,4)
  36.  
  37. #define is_method(x)     (typeof(x)==TYPE_METHOD)
  38.  
  39. #define is_special_method(x) (typeof(x)==TYPE_SPECIAL_METHOD)
  40.  
  41. #define N_SLOTS_IN_SPECIAL_METHOD 1
  42. #define special_method_id(x)     slotref(x,0)
  43.  
  44. #endif
  45.  
  46.  
  47.